package com.hereway.core.dao;

import java.io.Serializable;
import java.util.List;

import com.hereway.core.context.PageBean;

public interface IBaseDAO<T, PK extends Serializable> {
	/**
	 * 按主键加载实体
	 * 
	 * @param pk
	 * @return
	 */
	public T load(final PK pk);
	
	public T get(final PK pk);
	
	public List<T> loadAll(PageBean page);
	
	/**
	 * 获取所有对象列表
	 * 
	 * @return
	 */
	public List<T> loadAll();
	
	
	/**
	 * 保存实体对象
	 * 
	 * @param entity
	 */
	public void save(T entity);

	/**
	 * 更新实体对象
	 * 
	 * @param entity
	 */
	public void update(T entity);

	/**
	 * 按主键删除实体对象
	 * 
	 * @param pk
	 */
	public void delete(final PK pk);

	/**
	 * 删除实体对象
	 * @param entity
	 */
	public void delete(T entity);

	
	public void delete(List<T> list);
	
	public List<T> find(final String whereStr);
	
	public List<T> find(final String whereStr, final String orderStr);
	
	public List<T> find(final String whereStr, final String orderStr, final PageBean page);
	
	public List<T> find(final String whereStr, final PageBean page);
	
/*	*//**
	 * 根据分页参数获取对象列表
	 * @param page
	 * @return
	 *//*
	public List<T> load(PagerModel<T> page);
	
	*//**
	 * 获取分页实体列表
	 * 
	 * @param page
	 * @return
	 *//*
	public PagerModel<T> page(PagerModel<T> page);
	*/
}
